package com.qfedu.controller;


import com.qfedu.constant.Constants;
import com.qfedu.entity.ResponseData;
import com.qfedu.entity.SongList;
import com.qfedu.service.ConsumerService;
import com.qfedu.service.SongListService;
import com.qfedu.entity.Singer;
import com.qfedu.service.SingerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

/**
 * 后续上传图片 头像 mp3 都仿写此例子
 */
@RestController
public class FileController {

    @Autowired
    private ConsumerService consumerService;
    @Autowired
    private SingerService singerService;

    /**
     * List<MultipartFile> uploadFile  文件上传可以是 一次上传多个
     *
     *
     * @param id
     * @param file
     * @return
     */
    @RequestMapping("/user/avatar/update")
    public ResponseData<String> uploadFileUser(int id,MultipartFile file){


        String avator = null;

        if (file != null){
            try {
                // Linux 路径
                String parentPath = Constants.RESOURCE_WIN_PATH + "/img/avatorImages/";
                // Windows 路径
                //String parentPath = Constants.RESOURCE_WIN_PATH + "\\img\\avatorImages\\";

                File parentFile = new File(parentPath);
                if (!parentFile.exists()) {
                    parentFile.mkdirs();// 如果文件的父目录不存在，则创建目录，     mkdirs创建多层目录
                }

                // 文件本身名字
                String originalFilename = file.getOriginalFilename();

                // parentPath 父目录
                // filename 提交的文件
                // originalFilename  文件原生名字
                // 防止文件  被覆盖
                String newFileName = UUID.randomUUID() + "-" + originalFilename;//新的文件名
                String filePath = parentPath + newFileName;
                System.out.println("filePath = " + filePath);

                // 将接收到的文件写入磁盘
                file.transferTo(new File(filePath));

                avator = "/img/avatorImages/"+newFileName;

            }catch (IOException e){
                e.printStackTrace();
            }
        }

        // 上传数据库
        return consumerService.updateAvator(id,avator);


    }


    @Autowired
    private SongListService songListService;

    /**
     * List<MultipartFile> uploadFile  文件上传可以是 一次上传多个
     *
     *
     * @param id
     * @param file
     * @return
     */
    @RequestMapping("/songList/img/update")
    public ResponseData<String> uploadFileSongList(int id,MultipartFile file){


        String pic = null;

        if (file != null){
            try {
                // Linux 路径
                String parentPath = Constants.RESOURCE_WIN_PATH + "/img/songListPic/";
                // Windows 路径
                //String parentPath = Constants.RESOURCE_WIN_PATH + "\\img\\songListPic\\";


                File parentFile = new File(parentPath);
                if (!parentFile.exists()) {
                    parentFile.mkdirs();// 如果文件的父目录不存在，则创建目录，     mkdirs创建多层目录
                }

                // 文件本身名字
                String originalFilename = file.getOriginalFilename();

                // parentPath 父目录
                // filename 提交的文件
                // originalFilename  文件原生名字
                // 防止文件  被覆盖
                String newFileName = UUID.randomUUID() + "-" + originalFilename;//新的文件名
                String filePath = parentPath + newFileName;
                System.out.println("filePath = " + filePath);

                // 将接收到的文件写入磁盘
                file.transferTo(new File(filePath));

                pic = "/img/songListPic/"+newFileName;

            }catch (IOException e){
                e.printStackTrace();
            }
        }
        SongList songList = new SongList();
        songList.setId(id);
        songList.setPic(pic);
        // 上传数据库
        return songListService.updateSongListMsg(songList);


    }

    /**
     *  更换歌手头像
     * @param file
     * @return
     */
    @RequestMapping("/singer/avatar/update")
    public ResponseData<String> uploadFileOfSinger(Singer singer, MultipartFile file){

        String avator = null;

        if (file != null){
            try {
                // Linux 路径
                String parentPath = Constants.RESOURCE_WIN_PATH + "/img/singerPic/";
                // Windows 路径
                //String parentPath = Constants.RESOURCE_WIN_PATH + "\\img\\singerPic\\";

                File parentFile = new File(parentPath);
                if (!parentFile.exists()) {
                    parentFile.mkdirs();// 如果文件的父目录不存在，则创建目录，     mkdirs创建多层目录
                }

                // 文件本身名字
                String originalFilename = file.getOriginalFilename();

                // parentPath 父目录
                // filename 提交的文件
                // originalFilename  文件原生名字
                // 防止文件  被覆盖
                String newFileName = UUID.randomUUID() + "-" + originalFilename;//新的文件名

                String filePath = parentPath + newFileName;
                System.out.println("filePath = " + filePath);
                // 将接收到的文件写入磁盘
                file.transferTo(new File(filePath));
                avator = "/img/singerPic/"+newFileName;

                singer.setPic(avator);
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        // 上传数据库
        return singerService.updateAvator(singer);


    }

}
